In a computer cluster environment, one or more nodes may execute one or more multi-tier applications. For example, a computer cluster may include a node configured to provide a set of virtual machines that each represent a different architectural layer within a multi-tier application. In addition, the computer cluster may include another node configured to provide another set of virtual machines that each represent a different architectural layer within another multi-tier application.
Such a computer cluster environment may also include a failover node capable of assuming responsibility for one or more virtual machines in the event of a system failure affecting one or more nodes within the computer cluster. Unfortunately, while the failover node may assume responsibility for one or more virtual machines in the event of a system failure, the failover node may not have the necessary capacity to assume responsibility for all of the virtual machines affected by the system failure.
Some existing cluster technologies may select the virtual machines that are to fail over to the failover node without taking into account whether such virtual machines represent layers within a multi-tier application. For example, upon detecting a system failure affecting multiple nodes within the computer cluster, a cluster technology may select a subset (i.e., less than all) of the virtual machines associated with the multi-tier application to fail over to the failover node. Unfortunately, the multi-tier application may be unable to function properly after failover since only a subset of the virtual machines associated with the multi-tier application survived the system failure.
As such, the instant disclosure identifies a need for systems and methods for facilitating high availability of multi-tier applications within computer clusters by failing over all of the virtual machines associated with the multi-tier applications during the failover process.